The determination of optimal well locations to maximize asset value throughout the life of an oilfield is a key reservoir management decision. Current industry practice is to determine the location of wells through manual approaches, wherein one must rely on engineering judgment and numerical simulation. Although this may be viable for small reservoirs with a small number of wells, the use of such approaches becomes increasingly cumbersome and very undesirable when dealing with large reservoirs and a large number of wells. In some instances, the use of such manual methodology is not feasible for such large-scale simulation models.
There has been an increasing interest in solving the problem of well optimization more efficiently with the use of automatic optimization algorithms. Optimal well placement is typically formulated as a discrete parameter optimization problem, because the well location variables (i, j indices of grid blocks where wells are located) are discrete variables. Due to the discrete nature of this problem, gradients of the objective function (e.g., Net Present Value (NPV)) with respect to these discrete variables do not exist. Therefore, the majority of existing algorithms applied to this problem have been stochastic gradient-free algorithms, such as genetic algorithms, simulated annealing, and stochastic perturbation methods. Although these algorithms are generally easy to apply and are supposedly global in nature, they are usually quite inefficient requiring hundreds of simulations. Thus, these methods have limited application to large-scale simulation models with many wells. Furthermore, they do not guarantee a monotonic increase in the objective function with successive iterations, which implies that increasing the computational effort may not necessarily provide a better optimum.
Efficiency of the optimization algorithm becomes imperative for practical applicability, as most practical simulation models range from a few hundred thousand cells to a few million cells. With hundreds of wells, simulation of these models typically require many hours for a single evaluation. Furthermore, since any improvement of the objective function from the base case is useful, it is desirable, although not necessary, to obtain the global optimum. Therefore, gradient-based algorithms seem to be a practical choice provided that they can be applied to this problem. Gradient-based algorithms with associated adjoint models are typically considered more efficient compared to the foregoing stochastic algorithms, as they generally require only tens of iterations for convergence and guarantee a monotonically increasing objective function with successive iterations. Gradient-based algorithms do however have the potential drawback of being stuck in local minima. Additionally, due to the nature of being a discrete parameter problem, gradients of the objective function with respect to these discrete variables do not exist and therefore, a direct application is not possible for the discrete parameter problem. Methods of applying gradients and adjoints have, none the less, been used indirectly for the well placement problem.
One example is a method that surrounds each well to be optimized by eight “pseudo-wells” in the eight neighboring grid blocks in the 2D plane. Each pseudo-well produces at a very low rate to minimize their respective influence on the flow behavior of the reservoir. An adjoint model is then used to calculate the gradient of the objective function, such as Net Present Value, over the life of the reservoir with respect to the rate at each pseudo-well. The largest positive gradient value among the eight gradients then determines the direction in which the original well should be moved to increase the objective function in the next iteration. That is, the improving direction is approximated as the direction of the pseudo-well location, from the original well location, with the largest positive gradient.
This approach is an indirect application of gradients, as gradients of the objective function with respect to rate of the pseudo-well are used instead of the gradients of the objective function with respect to actual optimization parameters (i, j well location indices). Furthermore, a basic limitation of the approach is that only eight possible search directions for each well, which correspond to the direction of the eight pseudo-wells, can be obtained per iteration. This can be quite limiting as the optimal search direction resulting in the fastest increase in the objective function can be any arbitrary direction in the 2D plane. Also, each well is typically set to move only one grid block per iteration, which will be very inefficient for practical problems.
Another example of an indirect method of applying gradients and adjoints for the well placement problem, is a method that initializes the optimization problem with an injector well at each grid block that does not contain a producer well. The number of injector wells is successively reduced at each iteration until the optimal number of injector wells remain at the optimal locations. In order to do so, the objective function, such as a function to obtain Net Present Value, is augmented with a drilling cost assigned to each well drilled. Therefore, the modified objective function will be more heavily penalized for a larger number of drilled injector wells due to the associated total drilling cost. The algorithm advances by calculating the gradient of the modified objective function with respect to the rate of each injector well using an adjoint model. These gradients are used to calculate the next rate for each well injector using the steepest descent method. As the rate of an injector well goes to zero, the injector well is eliminated. Ultimately, the optimum number of injector wells at the optimal well locations should remain.
Again, this example is also an indirect application of gradients, as the gradients of the objective function with respect to rate of the injector wells is used instead of the gradients of the objective function with respect to actual optimization parameters (i, j well location indices). Further, because this algorithm starts by drilling an injector well at each grid block, and only one injector can be eliminated per iteration, it is clearly not a very practical or efficient approach for large-scale simulation problems.